home *** CD-ROM | disk | FTP | other *** search
- package com.ms.awt;
-
- import java.awt.Font;
- import java.awt.FontMetrics;
- import java.awt.Graphics;
- import java.awt.Point;
- import sun.awt.win32.MComponentPeer;
- import sun.awt.win32.Win32Graphics;
- import sun.awt.win32.Win32Image;
- import sun.awt.win32.Win32PrintJob;
-
- public class GraphicsX extends Win32Graphics {
- private final int TTPOLYHEADER = 16;
- // $FF: renamed from: go com.ms.awt.GlyphOutline[]
- private GlyphOutline[] field_0;
- private int bPos;
-
- public GraphicsX(Win32Image var1) {
- super(var1);
- }
-
- public void drawString(String var1, int var2, int var3) {
- FontX var4 = this.getFontX(8);
- if (var4 == null) {
- super.drawString(var1, var2, var3);
- } else {
- this.drawStringWidth(var1, var2, var3);
- }
-
- }
-
- int getSizeGlyphInt() {
- return 4;
- }
-
- int getGlyphInt(byte[] var1) {
- int var2 = (var1[this.bPos] & 255) + (var1[this.bPos + 1] & 255) * 256 + ((var1[this.bPos + 2] & 255) + (var1[this.bPos + 3] & 255) * 256) * 65536;
- this.bPos += this.getSizeGlyphInt();
- return var2;
- }
-
- Point getGlyphPoint(byte[] var1) {
- int var2 = this.getGlyphInt(var1);
- int var3 = this.getGlyphInt(var1);
- return new Point(var2, var3);
- }
-
- int getSizeGlyphFloat(byte[] var1) {
- return this.getSizeGlyphInt();
- }
-
- private GlyphOutline getGlyphOutline1(char var1) {
- byte[] var4 = this.getCharOutline(var1);
- if (var4 == null) {
- return null;
- } else {
- int var5 = var4.length;
- this.bPos = 0;
- GlyphOutline var6 = new GlyphOutline();
- GlyphMetrics var7 = new GlyphMetrics();
- var7.blackBoxX = this.getGlyphInt(var4);
- var7.blackBoxY = this.getGlyphInt(var4);
- var7.glyphOrigin = this.getGlyphPoint(var4);
- var7.cellIncX = this.getGlyphShort(var4);
- var7.cellIncY = this.getGlyphShort(var4);
- var6.gm = var7;
- int var8 = var5 - this.bPos;
- int var9 = 0;
-
- int var2;
- int var3;
- for(var2 = this.bPos; var8 != 0; this.bPos += var3 - this.getSizeGlyphInt()) {
- ++var9;
- var3 = this.getGlyphInt(var4);
- var8 -= var3;
- }
-
- var6.polygons = new OutlinePolygon[var9];
-
- for(int var10 = 0; var10 < var9; ++var10) {
- this.bPos = var2;
- int var11 = this.getGlyphInt(var4);
- var3 = var11 - 16;
- OutlinePolygon var12 = new OutlinePolygon(1);
- var6.polygons[var10] = var12;
- var12.type = this.getGlyphInt(var4) == 24 ? 1 : 0;
- var12.fxStart = this.getGlyphPointFx(var4);
-
- int var13;
- for(var13 = 0; var3 > 0; ++var13) {
- this.getGlyphShort(var4);
- int var14 = this.getGlyphShort(var4);
- int var15 = this.getSizeGlyphPointFx(var4) * var14;
- this.bPos += var15;
- var3 -= var15 + 4;
- }
-
- var12.curves = new OutlineCurve[var13];
- this.bPos = var2 + 16;
-
- for(int var21 = 0; var21 < var13; ++var21) {
- OutlineCurve var22 = new OutlineCurve();
- var12.curves[var21] = var22;
- int var16 = this.getGlyphShort(var4);
- var22.type = var16;
- if (var16 != 1 && var16 != 2) {
- System.out.println("Error in parsing OutlinePolygon!");
- return null;
- }
-
- int var17 = this.getGlyphShort(var4);
- var22.points = new PointFx[var17];
-
- for(int var18 = 0; var18 < var17; ++var18) {
- var22.points[var18] = this.getGlyphPointFx(var4);
- }
- }
-
- var2 += var11;
- }
-
- return var6;
- }
- }
-
- public void drawOutlinePolygon(int var1, int var2, OutlinePolygon var3) {
- PointFx var4 = var3.fxStart;
- int var5 = var3.curves.length;
- PointFx var6 = new PointFx();
-
- for(int var7 = 0; var7 < var5; ++var7) {
- OutlineCurve var8 = var3.curves[var7];
- int var9 = var8.points.length;
- if (var8.type == 1) {
- for(int var15 = 0; var15 < var9; ++var15) {
- PointFx var16 = var8.points[var15];
- ((Win32Graphics)this).drawLine(var1 + (int)var4.x, var2 - (int)var4.y, var1 + (int)var16.x, var2 - (int)var16.y);
- var4 = var16;
- }
- } else if (var8.type == 2) {
- if (var3.type == 2) {
- this.pDrawBezier(var1, var2, var4, var8, var9);
- } else {
- if (var3.type != 1) {
- System.out.println("Error! Unknown polygon type");
- return;
- }
-
- PointFx var10 = var4;
-
- for(int var13 = 0; var13 < var9 - 1; ++var13) {
- PointFx var11 = var8.points[var13];
- PointFx var12;
- if (var13 < var9 - 2) {
- var6.x = (var11.x + var8.points[var13 + 1].x) / 2.0F;
- var6.y = (var11.y + var8.points[var13 + 1].y) / 2.0F;
- var12 = var6;
- } else {
- var12 = var8.points[var13 + 1];
- }
-
- this.drawT2Curve(var10, var11, var12, var1, var2);
- var10 = var12;
- }
- }
-
- var4 = var8.points[var9 - 1];
- }
- }
-
- if (var3.fxStart.x != var4.x || var3.fxStart.y != var4.y) {
- ((Win32Graphics)this).drawLine(var1 + (int)var4.x, var2 - (int)var4.y, var1 + (int)var3.fxStart.x, var2 - (int)var3.fxStart.y);
- }
-
- }
-
- PointFx getGlyphPointFx(byte[] var1) {
- float var2 = this.getGlyphFloat(var1);
- float var3 = this.getGlyphFloat(var1);
- return new PointFx(var2, var3);
- }
-
- private FontX getFontX(int var1) {
- Font var2 = ((Win32Graphics)this).getFont();
- if (var2 instanceof FontX) {
- FontX var3 = (FontX)var2;
- if (var1 == 0) {
- return var3;
- }
-
- if ((var3.getFlags() & var1) != 0) {
- return var3;
- }
- }
-
- return null;
- }
-
- public int gethdc() {
- return ((Win32Graphics)this).GetDC();
- }
-
- private void drawT2Curve(PointFx var1, PointFx var2, PointFx var3, int var4, int var5) {
- double var10 = (double)(var1.x - 2.0F * var2.x + var3.x);
- double var12 = (double)(2.0F * var2.x - 2.0F * var1.x);
- double var14 = (double)var1.x;
- double var16 = (double)(var1.y - 2.0F * var2.y + var3.y);
- double var18 = (double)(2.0F * var2.y - 2.0F * var1.y);
- double var20 = (double)var1.y;
- int var8 = var4 + (int)var14;
- int var9 = var5 - (int)var20;
-
- for(double var22 = (double)0.0F; var22 < (double)1.0F; var22 += 0.1) {
- int var6 = var4 + (int)(var10 * var22 * var22 + var12 * var22 + var14);
- int var7 = var5 - (int)(var16 * var22 * var22 + var18 * var22 + var20);
- ((Win32Graphics)this).drawLine(var8, var9, var6, var7);
- var8 = var6;
- var9 = var7;
- }
-
- }
-
- private native byte[] getCharOutline(char var1);
-
- public int drawStringWidth(String var1, int var2, int var3) {
- FontX var4 = this.getFontX(8);
- return var4 == null ? super.drawStringWidth(var1, var2, var3) : super.drawStringWidth(var1, var2, var3);
- }
-
- public void setFont(Font var1) {
- if (this.field_0 != null) {
- this.field_0 = null;
- }
-
- super.setFont(var1);
- }
-
- public void drawBytes(byte[] var1, int var2, int var3, int var4, int var5) {
- FontX var6 = this.getFontX(8);
- if (var6 == null) {
- super.drawBytes(var1, var2, var3, var4, var5);
- } else {
- super.drawBytes(var1, var2, var3, var4, var5);
- }
-
- }
-
- private void drawOutlineChar(int var1, int var2, GlyphOutline var3) {
- int var4 = var3.polygons.length;
-
- for(int var5 = 0; var5 < var4; ++var5) {
- this.drawOutlinePolygon(var1, var2, var3.polygons[var5]);
- }
-
- }
-
- float getGlyphFloat(byte[] var1) {
- int var2 = this.getGlyphInt(var1);
- float var3 = (float)var2 / 65536.0F;
- return var3;
- }
-
- private native void pDrawBezier(int var1, int var2, PointFx var3, OutlineCurve var4, int var5);
-
- public void drawChars(char[] var1, int var2, int var3, int var4, int var5) {
- FontX var6 = this.getFontX(8);
- if (var6 == null) {
- super.drawChars(var1, var2, var3, var4, var5);
- } else {
- this.drawCharsWidth(var1, var2, var3, var4, var5);
- }
-
- }
-
- int getGlyphShort(byte[] var1) {
- int var2 = (var1[this.bPos] & 255) + (var1[this.bPos + 1] & 255) * 256;
- this.bPos += 2;
- return var2;
- }
-
- public GlyphOutline getGlyphOutline(char var1) {
- if (var1 >= 256) {
- return this.getGlyphOutline1(var1);
- } else {
- if (this.field_0 == null) {
- this.field_0 = new GlyphOutline[256];
- }
-
- if (this.field_0[var1] == null) {
- this.field_0[var1] = this.getGlyphOutline1(var1);
- }
-
- return this.field_0[var1];
- }
- }
-
- public int drawCharsWidth(char[] var1, int var2, int var3, int var4, int var5) {
- FontX var6 = this.getFontX(8);
- if (var6 == null) {
- return super.drawCharsWidth(var1, var2, var3, var4, var5);
- } else {
- FontMetrics var8 = ((Graphics)this).getFontMetrics();
- int var9 = var8.getAscent();
-
- for(int var7 = 0; var7 < var3; ++var7) {
- GlyphOutline var10 = this.getGlyphOutline(var1[var2 + var7]);
- if (var10 != null) {
- this.drawOutlineChar(var4, var5 + var9, var10);
- } else {
- super.drawCharsWidth(var1, var2 + var7, 1, var4, var5);
- }
-
- var4 += var8.charWidth(var1[var2 + var7]);
- }
-
- return var4;
- }
- }
-
- public int drawBytesWidth(byte[] var1, int var2, int var3, int var4, int var5) {
- FontX var6 = this.getFontX(8);
- return var6 == null ? this.drawBytesWidth(var1, var2, var3, var4, var5) : this.drawBytesWidth(var1, var2, var3, var4, var5);
- }
-
- int getSizeGlyphPointFx(byte[] var1) {
- return this.getSizeGlyphFloat(var1) * 2;
- }
-
- public GraphicsX(Win32PrintJob var1) {
- super(var1);
- }
-
- public GraphicsX(GraphicsX var1) {
- super(var1);
- }
-
- public GraphicsX(Win32Graphics var1) {
- super(var1);
- }
-
- public GraphicsX(MComponentPeer var1) {
- super(var1);
- }
- }
-